package com.zzsy.carosshopprojects.network;


import com.zzsy.carosshopprojects.base.DoHandoverCzBean;
import com.zzsy.carosshopprojects.bean.ActivityBean;
import com.zzsy.carosshopprojects.bean.BaseBean;
import com.zzsy.carosshopprojects.bean.CarCardBean;
import com.zzsy.carosshopprojects.bean.CardZBBean;
import com.zzsy.carosshopprojects.bean.ChangeShiftsBean;
import com.zzsy.carosshopprojects.bean.ConfigBean;
import com.zzsy.carosshopprojects.bean.CouponListBean;
import com.zzsy.carosshopprojects.bean.CreateFuCardBean;
import com.zzsy.carosshopprojects.bean.CreateOrderBean;
import com.zzsy.carosshopprojects.bean.CreateRechargeOrderBean;
import com.zzsy.carosshopprojects.bean.DoHandoverBean;
import com.zzsy.carosshopprojects.bean.GetMainCardBean;
import com.zzsy.carosshopprojects.bean.GetOilsListBean;
import com.zzsy.carosshopprojects.bean.HomeContentBean;
import com.zzsy.carosshopprojects.bean.LoginBean;
import com.zzsy.carosshopprojects.bean.MainCardListBean;
import com.zzsy.carosshopprojects.bean.MemberInfoBean;
import com.zzsy.carosshopprojects.bean.OrderBean;
import com.zzsy.carosshopprojects.bean.OrderDetialBean;
import com.zzsy.carosshopprojects.bean.OrderListBean;
import com.zzsy.carosshopprojects.bean.OrderZongBean;
import com.zzsy.carosshopprojects.bean.ReceiptBean;
import com.zzsy.carosshopprojects.bean.RechargeOrderDetialBean;
import com.zzsy.carosshopprojects.bean.RedPageBean;
import com.zzsy.carosshopprojects.bean.RefundPasswordBean;
import com.zzsy.carosshopprojects.bean.ReghterOrderBean;
import com.zzsy.carosshopprojects.bean.ServiceCardBean;
import com.zzsy.carosshopprojects.network.Utils.BaseResponse;

import java.util.List;
import java.util.Map;

import io.reactivex.Observable;
import okhttp3.RequestBody;
import retrofit2.http.Body;
import retrofit2.http.FieldMap;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.Header;
import retrofit2.http.Headers;
import retrofit2.http.POST;

public interface ApiUrl {
    /**
     * 有效链接
     */

    @Headers("Accept:application/json")
    @POST(Constans.LOGIN)
    @FormUrlEncoded
    Observable<BaseResponse<LoginBean>> postLogin(@FieldMap Map<String, String> map);

    @Headers("Accept:application/json")
    @POST(Constans.UPDATEQRSWITCH)
    @FormUrlEncoded
    Observable<BaseResponse<BaseBean>> postUpdateQrSwitch(@FieldMap Map<String, String> map);

    @Headers("Accept:application/json")
    @POST(Constans.HOMECONTENT)
    @FormUrlEncoded
    Observable<BaseResponse<HomeContentBean>> postHomeContent(@FieldMap Map<String, String> map);


    @Headers({"Content-Type: application/json", "Accept: application/json"})
    @POST(Constans.HANDOVERLIST)
    Observable<BaseResponse<ChangeShiftsBean>> postHandoverList(@Body RequestBody body);

    @Headers({"Content-Type: application/json", "Accept: application/json"})
    @POST(Constans.RECHARGEHANDOVERLIST)
    Observable<BaseResponse<ChangeShiftsBean>> postRechargeHandoverList(@Body RequestBody body);

    @Headers("Accept:application/json")
    @POST(Constans.DOHANDOVER)
    @FormUrlEncoded
    Observable<BaseResponse<List<DoHandoverCzBean>>> postDoHandover(@FieldMap Map<String, String> map);

    @Headers("Accept:application/json")
    @POST(Constans.DORECHARGEHANDOVER)
    @FormUrlEncoded
    Observable<BaseResponse<DoHandoverBean>> postDoRechargeHandover(@FieldMap Map<String, String> map);

    @Headers("Accept:application/json")
    @POST(Constans.ISHAVETICKETPRINT)
    @FormUrlEncoded
    Observable<BaseResponse<List<OrderListBean>>> postIsHaveTicketPrint(@FieldMap Map<String, String> map);

    @Headers("Accept:application/json")
    @POST(Constans.UPDATEPRINTSTATUS)
    @FormUrlEncoded
    Observable<BaseResponse<BaseBean>> postUpdatePrintStatus(@FieldMap Map<String, String> map);

    @Headers("Accept:application/json")
    @POST(Constans.GETOILLISTBYSTOREID)
    @FormUrlEncoded
    Observable<BaseResponse<List<GetOilsListBean>>> postOilListByStoreId(@FieldMap Map<String, String> map);

    @Headers("Accept:application/json")
    @POST(Constans.GETTOKEN)
    @FormUrlEncoded
    Observable<BaseResponse<BaseBean>> postToken(@FieldMap Map<String, String> map);

    @Headers("Accept:application/json")
    @POST(Constans.CREATEORDER)
    @FormUrlEncoded
    Observable<BaseResponse<CreateOrderBean>> postCreateOrder(@FieldMap Map<String, String> map, @Header("idempotenceToken") String token);

    @Headers("Accept:application/json")
    @POST(Constans.ORDERPAY)
    @FormUrlEncoded
    Observable<BaseResponse<BaseBean>> postOrderPay(@FieldMap Map<String, String> map, @Header("idempotenceToken") String token);

    @Headers("Accept:application/json")
    @POST(Constans.ORDERDETAIL)
    @FormUrlEncoded
    Observable<BaseResponse<OrderDetialBean>> postOrderDetail(@FieldMap Map<String, String> map);

    @Headers("Accept:application/json")
    @POST(Constans.BankPayChannel)
    @FormUrlEncoded
    Observable<BaseResponse<BaseBean>> postBankPayChannel(@FieldMap Map<String, String> map);

    @Headers("Accept:application/json")
    @POST(Constans.UpdateRecheargeOrderStatus)
    @FormUrlEncoded
    Observable<BaseResponse<BaseBean>> postUpdateRecheargeOrderStatus(@FieldMap Map<String, String> map);

    @Headers("Accept:application/json")
    @POST(Constans.UpdateOrderStatus)
    @FormUrlEncoded
    Observable<BaseResponse<BaseBean>> postUpdateOrderStatus(@FieldMap Map<String, String> map);

    @Headers("Accept:application/json")
    @POST(Constans.MemberByUuid)
    @FormUrlEncoded
    Observable<BaseResponse<MemberInfoBean>> postMemberByUuid(@FieldMap Map<String, String> map);

    @Headers("Accept:application/json")
    @POST(Constans.DrawBill)
    @FormUrlEncoded
    Observable<BaseResponse<BaseBean>> postDrawBill(@FieldMap Map<String, String> map, @Header("idempotenceToken") String token);

    @Headers("Accept:application/json")
    @POST(Constans.OilListByStoreIdAndProductId)
    @FormUrlEncoded
    Observable<BaseResponse<List<GetOilsListBean>>> postOilListByStoreIdAndProductId(@FieldMap Map<String, String> map);

    @Headers("Accept:application/json")
    @POST(Constans.GetActivity)
    @FormUrlEncoded
    Observable<BaseResponse<List<ActivityBean>>> postGetActivity(@FieldMap Map<String, String> map);

    @Headers("Accept:application/json")
    @POST(Constans.MemberRedPackedList)
    @FormUrlEncoded
    Observable<BaseResponse<List<RedPageBean>>> postMemberRedPackedList(@FieldMap Map<String, String> map);

    @Headers("Accept:application/json")
    @POST(Constans.BalancePay)
    @FormUrlEncoded
    Observable<BaseResponse<BaseBean>> postBalancePay(@FieldMap Map<String, String> map, @Header("idempotenceToken") String token);

    @Headers("Accept:application/json")
    @POST(Constans.CancelOrder)
    @FormUrlEncoded
    Observable<BaseResponse<BaseBean>> postCancelOrder(@FieldMap Map<String, String> map);

    @Headers("Accept:application/json")
    @POST(Constans.GetMiniQr)
    @FormUrlEncoded
    Observable<BaseResponse<BaseBean>> postGetMiniQr(@FieldMap Map<String, String> map);

    @Headers("Accept:application/json")
    @POST(Constans.GetQuickJoinOilQr)
    @FormUrlEncoded
    Observable<BaseResponse<BaseBean>> postGetQuickJoinQr(@FieldMap Map<String, String> map);

    @Headers("Accept:application/json")
    @POST(Constans.ServiceCardList)
    @FormUrlEncoded
    Observable<BaseResponse<List<ServiceCardBean>>> postServiceCardList(@FieldMap Map<String, String> map);

    @Headers("Accept:application/json")
    @POST(Constans.CreateWashCarCard)
    @FormUrlEncoded
    Observable<BaseResponse<CarCardBean>> postCreateWashCarCard(@FieldMap Map<String, String> map);

    @Headers("Accept:application/json")
    @POST(Constans.OrdersByTerminalId)
    @FormUrlEncoded
    Observable<BaseResponse<OrderBean>> postOrdersByTerminalId(@FieldMap Map<String, String> map);

    @Headers("Accept:application/json")
    @POST(Constans.ShiftStatisticsByTerminalId)
    @FormUrlEncoded
    Observable<BaseResponse<OrderZongBean>> postShiftStatisticsByTerminalId(@FieldMap Map<String, String> map);

    @Headers("Accept:application/json")
    @POST(Constans.CarPreparation)
    @FormUrlEncoded
    Observable<BaseResponse<CardZBBean>> postCarPreparation(@FieldMap Map<String, String> map);

    @Headers("Accept:application/json")
    @POST(Constans.CreateMainCard)
    @FormUrlEncoded
    Observable<BaseResponse<BaseBean>> postCreateMainCard(@FieldMap Map<String, String> map, @Header("idempotenceToken") String token);

    @Headers("Accept:application/json")
    @POST(Constans.GetCode)
    @FormUrlEncoded
    Observable<BaseResponse<BaseBean>> postGetCode(@FieldMap Map<String, String> map);

    @Headers("Accept:application/json")
    @POST(Constans.CheckCode)
    @FormUrlEncoded
    Observable<BaseResponse<BaseBean>> postCheckCode(@FieldMap Map<String, String> map);

    @Headers("Accept:application/json")
    @POST(Constans.MyMainCardsByPhone)
    @FormUrlEncoded
    Observable<BaseResponse<MainCardListBean>> postMyMainCardsByPhone(@FieldMap Map<String, String> map);

    @Headers("Accept:application/json")
    @POST(Constans.UpdateCardByUuid)
    @FormUrlEncoded
    Observable<BaseResponse<BaseBean>> postUpdateCardByUuid(@FieldMap Map<String, String> map);

    @Headers("Accept:application/json")
    @POST(Constans.MemberSubCardsByUuid)
    @FormUrlEncoded
    Observable<BaseResponse<GetMainCardBean>> postMemberSubCardsByUuid(@FieldMap Map<String, String> map);

    @Headers("Accept:application/json")
    @POST(Constans.UntyingCard)
    @FormUrlEncoded
    Observable<BaseResponse<BaseBean>> postUntyingCard(@FieldMap Map<String, String> map);

    @Headers("Accept:application/json")
    @POST(Constans.LossCard)
    @FormUrlEncoded
    Observable<BaseResponse<BaseBean>> postLossCard(@FieldMap Map<String, String> map);

    @Headers("Accept:application/json")
    @POST(Constans.UpdateCardQuota)
    @FormUrlEncoded
    Observable<BaseResponse<BaseBean>> postUpdateCardQuota(@FieldMap Map<String, String> map);

    @Headers("Accept:application/json")
    @POST(Constans.SubCardTypeListByCardId)
    @FormUrlEncoded
    Observable<BaseResponse<List<CreateFuCardBean>>> postSubCardTypeListByCardId(@FieldMap Map<String, String> map);

    @Headers("Accept:application/json")
    @POST(Constans.CreateSubCard)
    @FormUrlEncoded
    Observable<BaseResponse<BaseBean>> postCreateSubCard(@FieldMap Map<String, String> map, @Header("idempotenceToken") String token);

    @Headers("Accept:application/json")
    @POST(Constans.RechargeActivity)
    @FormUrlEncoded
    Observable<BaseResponse<List<ActivityBean>>> postRechargeActivity(@FieldMap Map<String, String> map);

    @Headers("Accept:application/json")
    @POST(Constans.CreateRechargeOrder)
    @FormUrlEncoded
    Observable<BaseResponse<CreateRechargeOrderBean>> postCreateRechargeOrder(@FieldMap Map<String, String> map, @Header("idempotenceToken") String token);

    @Headers("Accept:application/json")
    @POST(Constans.GetROrder)
    @FormUrlEncoded
    Observable<BaseResponse<RechargeOrderDetialBean>> postGetROrder(@FieldMap Map<String, String> map);

    @Headers("Accept:application/json")
    @POST(Constans.GetMyMainCardsByPhone)
    @FormUrlEncoded
    Observable<BaseResponse<MainCardListBean>> postGetMyMainCardsByPhone(@FieldMap Map<String, String> map);

    @Headers("Accept:application/json")
    @POST(Constans.GetMemberCouponList)
    @FormUrlEncoded
    Observable<BaseResponse<CouponListBean>> postGetMemberCouponList(@FieldMap Map<String, String> map);

    @Headers("Accept:application/json")
    @POST(Constans.UseNonOilCoupon)
    @FormUrlEncoded
    Observable<BaseResponse<BaseBean>> postUseNonOilCoupon(@FieldMap Map<String, String> map, @Header("idempotenceToken") String token);

    @Headers("Accept:application/json")
    @POST(Constans.IntegralPay)
    @FormUrlEncoded
    Observable<BaseResponse<BaseBean>> postIntegralPay(@FieldMap Map<String, String> map);

    @Headers("Accept:application/json")
    @POST(Constans.DeleteCard)
    @FormUrlEncoded
    Observable<BaseResponse<BaseBean>> postDeleteCard(@FieldMap Map<String, String> map);

    @Headers("Accept:application/json")
    @POST(Constans.GetMemberRedPackedList)
    @FormUrlEncoded
    Observable<BaseResponse<List<RedPageBean>>> postGetMemberRedPackedList(@FieldMap Map<String, String> map);

    @Headers("Accept:application/json")
    @POST(Constans.DeleteCoupon)
    @FormUrlEncoded
    Observable<BaseResponse<BaseBean>> postDeleteCoupon(@FieldMap Map<String, String> map);

    @Headers("Accept:application/json")
    @POST(Constans.GetUnInvoiceOrdersByUuid)
    @FormUrlEncoded
    Observable<BaseResponse<ReceiptBean>> postGetUnInvoiceOrdersByUuid(@FieldMap Map<String, String> map);

    @Headers("Accept:application/json")
    @POST(Constans.DrawBillByCustomAmount)
    @FormUrlEncoded
    Observable<BaseResponse<BaseBean>> postDrawBillByCustomAmount(@FieldMap Map<String, String> map, @Header("idempotenceToken") String token);

    @Headers("Accept:application/json")
    @POST(Constans.ROrdersByTerminalId)
    @FormUrlEncoded
    Observable<BaseResponse<ReghterOrderBean>> postROrdersByTerminalId(@FieldMap Map<String, String> map);

    @Headers("Accept:application/json")
    @POST(Constans.Config)
    Observable<BaseResponse<ConfigBean>> postConfig();

    @Headers("Accept:application/json")
    @POST(Constans.RefundOrder)
    @FormUrlEncoded
    Observable<BaseResponse<BaseBean>> postRefundOrder(@FieldMap Map<String, String> map, @Header("idempotenceToken") String token);

    @Headers("Accept:application/json")
    @POST(Constans.VerificationPwd)
    @FormUrlEncoded
    Observable<BaseResponse<RefundPasswordBean>> postVerificationPwd(@FieldMap Map<String, String> map, @Header("idempotenceToken") String token);
}

